iOS 性能优化:用电池和性能 API 识别性能趋势
作者:红纸,iOS 开发者,目前就职于微医。
Sessions: https://developer.apple.com/videos/play/wwdc2020/10057/
概览
电池与性能数据是我们关注 APP 性能的两大指标。在 iOS 13 的时候,苹果爸爸发布了 MetricKit[1] 来帮助我们收集用户的电池消耗以及性能相关的数据。先前我们只能通过 App 内监听、Xcode Organizer 来访问这些数据。在此次的 WWDC20 中,苹果发布了一系列 API 来协助我们更好的访问,他们帮助我们统计到的数据。
Xcode Organizer
在去年的 WWDC19,苹果在 Xcode 11 中引入了新功能,用于分析电池消耗跟性能的相关分析工具,我们可以通过 Xcode Organizer 的可视化工具,查看苹果爸爸帮我们汇总的电源,性能和 I/O 指标。(详细内容可以参考 Improving Battery Life and Performance[2])
使用 App Store Connect API 提高自动化
每次都去点开 Xcode 工具着实麻烦,也无法集成到现有的公司内的监控系统当中。在本次 WWDC20 发布了一系列 API ,其中包含有 4 个新增 API,使我们能够以编程方式访问收集到的指标和诊断数据,我们可以自己使用这些数据进行一些自定义分析。除此之外,无需我们做其他任何配置,苹果将给我们在 API 的返回值中,加入了他们对于该数据的见解。
如果想了解更多的关于 API 可以参考 WWDC20 10004 使用 App Store Connect API 提高自动化[3]
4 个新增 API
通过 application id 获取诊断数据(包含智能建议)。
GET /v1/apps/{id}/perfPowerMetrics
通过 build id 获取诊断数据(不包含智能建议)。
GET /v1/builds/{id}/perfPowerMetrics
通过 build id 获取诊断签名,使用诊断签名,苹果将相似的问题进行分组在一起。例如,将类似的磁盘异常信息汇总在一起,以生成磁盘写入签名。
GET /v1/builds/{id}/diagnosticSignatures
根据 Diagnostic Signatures ID 获取具体的 Log 信息。
GET /v1/diagnosticSignatures/{id}/logs
诊断数据接口结果展示
GET /v1/apps/{id}/perfPowerMetrics
其返回值数据包含:
每个应用的数据信息(Metric Data)
智能分析的结果建议,这些智能的结果建议,会使用历史版本的指标数据进行智能化分析,自动标记需要关注的重点,此项功能在回归测试中将起到很好的参考作用
诊断签名接口结果展示
GET /v1/builds/{id}/diagnosticSignatures
其中包含有:
诊断签名数据类型(例如,图片当中的数据是磁盘写入相关的签名类型)
关联的详细数据 log url 地址
详细 Logs 数据展示
GET /v1/diagnosticSignatures/{id}/logs
其中包含有:
签名设备的基础信息
调用堆栈信息,有助于我们去分析调用路径情况
总结
本 Session 比较简单,提供了 4 个全新 API 方便我们将诊断数据拉取到本地,进行自主分析,在本次 WWDC20 中,可以看到苹果支持了越来越多的 API,方便开发者去定制自己的自动化流程。
推荐阅读
✨ iOS 性能优化:使用 MetricKit 2.0 收集数据
关注我们
我们是「老司机技术周报」,每周会发布一份关于 iOS 的周报,也会定期分享一些和 iOS 相关的技术。欢迎关注。
关注有礼,关注【老司机技术周报】,回复「2020」,领取学习大礼包。
支持作者
这篇文章的内容来自于 《WWDC20 内参》。在这里给大家推荐一下这个专栏,专栏目前已经创作了 108 篇文章,只需要 29.9 元。点击【阅读原文】,就可以购买继续阅读 ~
WWDC 内参 系列是由老司机周报、知识小集合以及 SwiftGG 几个技术组织发起的。已经做了几年了,口碑一直不错。 主要是针对每年的 WWDC 的内容,做一次精选,并号召一群一线互联网的 iOS 开发者,结合自己的实际开发经验、苹果文档和视频内容做二次创作。
参考资料
MetricKit: https://developer.apple.com/documentation/xcode/improving_your_app_s_performance
[2]Improving Battery Life and Performance: https://developer.apple.com/videos/play/wwdc2019/417/
[3]WWDC20 10004 使用 App Store Connect API 提高自动化: https://xiaozhuanlan.com/topic/8510792463